<?php
class UsuarioHelper {
	
	/**
	 * Nivel del usuario autenticado.
	 * @return Nivel
	 */
	public static function obtenerNivelUsuarioAutenticado() {
			return EmpresaHelper::obtenerNivelUsuarioAutenticado();
	}
	
	/**
	 * Obtiene la empresa del usuario que se ha autenticado.
	 * @return Empresa
	 */
	public static function obtenerEmpresaUsuarioAutenticado() {
		static $empresa=null,$puesto=false;
		
		if(!$puesto){
			if(Yii::app()->user->checkAccess(PerfilHelper::ADMINISTRADOR_SISTEMA)){
			}else{
				$id=Yii::app()->user->id;
				$command=Yii::app()->db->createCommand("SELECT e.*  FROM `empresa` e INNER JOIN `usuario_empresa` ue ON ue.empresa_id = e.id  WHERE ue.usuario_id = :usuario_id AND e.activo=1 LIMIT 1");
				$command->setFetchMode(PDO::FETCH_OBJ);
				$command->bindParam(":usuario_id",$id,PDO::PARAM_INT);
				$empresa=$command->queryRow();
			}
		}
		$puesto=true;
	
		return $empresa;
	}
	/**
	 * Obtiene el nombre de la empresa del usuario autenticado.
	 * @return Empresa
	 */
	public static function obtenerNombreEmpresaUsuarioAutenticado() {
		$empresa=UsuarioHelper::obtenerEmpresaUsuarioAutenticado();
		if($empresa){
			return $empresa->razon_social;
		}
		return "Ninguna empresa";
		
	}
	/**
	 * Obtiene el titulo de la aplicacion para el usuario autenticado.
	 * @return Empresa
	 */
	public static function obtenerTituloAplicacionEmpresaUsuarioAutenticado() {
		$empresa=UsuarioHelper::obtenerEmpresaUsuarioAutenticado();
		if($empresa){
			$nivel=Nivel::model()->findByPk($empresa->nivel_id);
			return $nivel->nombre.": ".$empresa->razon_social;
		}
		return CHtml::encode(Yii::app()->name);
	
	}
	/**
	 * Obtiene el pie de la aplicacion para el usuario autenticado.
	 * @return Empresa
	 */
	public static function obtenerPieAplicacionEmpresaUsuarioAutenticado() {
		$empresa=UsuarioHelper::obtenerEmpresaUsuarioAutenticado();
		if($empresa){
			return CHtml::encode(Yii::app()->name);
		}
		return "";
	
	}
	public static function obtenerTiposIdentificacion(){
		return Yii::app()->db->createCommand("SELECT ti.*  FROM `tipo_identificacion` ti  ORDER BY `nombre` ASC")->queryAll();
	}
	public static function obtenerRolesDeEmpresaUsuarioAutenticado(){
		$empresa=UsuarioHelper::obtenerEmpresaUsuarioAutenticado();
		$command=Yii::app()->db->createCommand("SELECT r.*  FROM `rol` r WHERE r.empresa_id = :empresa_id AND r.activo=1");
		$command->bindParam(":empresa_id",$empresa->id,PDO::PARAM_INT);
		return $command->queryAll();
	}
	
	public static function asignarRol($rol_id,$usuario_id)
	{
		$command=Yii::app()->db->createCommand("INSERT INTO `usuario_rol`(`usuario_id`, `rol_id`) VALUES (:usuario_id,:rol_id)");
		$command->bindParam(":usuario_id",$usuario_id,PDO::PARAM_INT);
		$command->bindParam(":rol_id",$rol_id,PDO::PARAM_INT);
		$command->execute();
	}
	
	public static function obtenerRolesEmpresaUsuarioAutenticadoToString()
	{
		
		$id=Yii::app()->user->id;
		$command=Yii::app()->db->createCommand("SELECT r.*  FROM `rol` r INNER JOIN `usuario_rol` ur ON ur.rol_id = r.id  WHERE ur.usuario_id = :usuario_id AND r.activo=1");
		$command->setFetchMode(PDO::FETCH_OBJ);
		$command->bindParam(":usuario_id",$id,PDO::PARAM_INT);
		$roles=$command->queryAll();
		$return="";
		foreach ($roles as $rol) {
			$return.=$rol->nombre.", ";
		}
		$return=substr($return,0,strlen($return)-2);
		return $return;
	}
	
	
}